package com.dong.Arrays.arithemtic;

import java.util.Arrays;

/**
 * 给你一个正整数 n ，生成一个包含 1 到 n2 所有元素，且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
 * 输入：n = 3
 * 输出：[[1,2,3],[8,9,4],[7,6,5]]
 */
public class Demo6 {
    public static void main(String[] args) {
        int[][] result = generateMatrix(5);
        System.out.println(Arrays.deepToString(result));

    }

    private static int[][] generateMatrix(int n) {
        int result[][] = new int[n][n];
        int h = 0;//上边界
        int r = n-1;//右边界
        int d = n-1;//下边界
        int l = 0;//左边界
        int target = n*n;
        int nums = 1;

        while (nums <= target){
            //从左到右
            for (int i = l; i <= r; i++) {
                result[h][i] = nums++;
            }
            //上边界收缩
            h++;

            //从上到下
            for (int j = h; j <= d; j++ ){
                result[j][r] = nums++;
            }
            //右边界收缩
            r--;

            //从右到左
            for (int k = r; k >= l; k--) {
                result[d][k] = nums++;
            }
            //下边界收缩
            d--;

            //从下到上
            for (int m = d; m >= h; m--) {
                result[m][l] = nums++;
            }
            //左边界收缩
            l++;
        }

        return result;
    }




}
